package com.redoor.app.stake.auth.service;

import com.redoor.app.stake.auth.model.BaseMenu;
import com.redoor.app.stake.auth.model.BaseMenuCriteria;
import com.redoor.app.stake.auth.model.serviceModel.BaseMenuServiceBean;
import com.redoornetwork.framework.mybatis.service.Service;

import java.util.List;

/**
 * Created by wangjunlei on 2018-02-07 15:19:13.
 */
public interface BaseMenuService extends Service<BaseMenu, String> {

    /**
     * 将model中为空的字段置为NULL
     * @param baseMenuCriteria
     * @return
     */
    int updateByPrimaryKey(BaseMenuCriteria baseMenuCriteria);
    /**
     * 主列表查询
     * @Author zhangYiHang
     * @Date 2018/3/8 19:30
     */
    List<BaseMenuServiceBean> qryMenu(BaseMenuCriteria baseMenuCriteria);
    /**
     * 根据用户id查询菜单列表
     * @Author zhangYiHang
     * @Date 2018/3/9 15:01
     */
    List<BaseMenuServiceBean> qryMenuUserUuid(String userUuid);
    /**
     * 根据角色uuid查询所属菜单列表
     * @Author zhangYiHang
     * @Date 2018/3/10 17:22
     */
    List<BaseMenu> qryMenuTree(String uuid);

    /**
     * 查询一级菜单列表
     * @Author zhangYiHang
     * @Date 2018/3/13 17:59
     */
    List<BaseMenu> qryPrimaryMenu(String type);
    /**
     * 菜单虚拟删除,修改菜单状态,并清除所有中间表信息
     * @Author zhangYiHang
     * @Date 2018/3/14 10:31
     */
    void deleteMenu(String uuid);
    /**
     * 菜单单表的正常数据查询
     * @Author zhangYiHang
     * @Date 2018/3/14 11:55
     */
    List<BaseMenu> qryMenuAll();
    /**
     * 根据菜单名称查询数据,返回查询出数量(不包含按钮)
     * @Author zhangYiHang
     * @Date 2018/3/26 11:34
     * @Param
     */
    Integer qryMenuCountByName(String name);
    /**
     * 根据uuid查询授权
     * @Author zhangYiHang
     * @Date 2018/3/30 20:58
     * @Param
     */
    List<String> qryMenuPermByUseruuid(String uuid);
    /**
     * 新增所有按钮信息到redis
     * @Author zhangYiHang
     * @Date 2018/4/13 10:07
     * @Param
     */
    void insertButtnAllToRedis();
    /**
     * 新增菜单
     * @Author zhangYiHang
     * @Date 2018/4/13 10:27
     * @Param
     */
    void insertMenu(BaseMenuCriteria baseMenuCriteria);
}